package priv.ln.selfdefine.exer1;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * ClassName: DAO
 * Package: priv.ln.selfdefine.exer1
 * Description:
 * 定义个泛型类 DAO<T>，在其中定义一个Map 成员变量，Map 的键为 String 类型，值为 T 类型。
 *
 * 分别创建以下方法：
 * public void save(String id,T entity)： 保存 T 类型的对象到 Map 成员变量中
 * public T get(String id)：从 map 中获取 id 对应的对象
 * public void update(String id,T entity)：替换 map 中key为id的内容,改为 entity 对象
 * public List<T> list()：返回 map 中存放的所有 T 对象
 * public void delete(String id)：删除指定 id 对象
 * @Author 辣辣
 * @Create 2024/8/4 13:32
 * @Version 1.0
 */
public class DAO<T> {
    private HashMap<String,T> map;

    public DAO() {
    }

    public DAO(HashMap<String, T> map) {
        this.map = map;
    }

    public HashMap<String, T> getMap() {
        return map;
    }

    public void setMap(HashMap<String, T> map) {
        this.map = map;
    }

    //保存 T 类型的对象到 Map 成员变量中
    public void save(String id,T entity){
        if(!map.containsKey(id)){
            map.put(id,entity);
        }
    }

    //从 map 中获取 id 对应的对象
    public T get(String id){
        return map.get(id);
    }

    //替换 map 中key为id的内容,改为 entity 对象
    public void update(String id,T entity){
        if(map.containsKey(id)){
            map.put(id,entity);
        }

    }

    //返回 map 中存放的所有 T 对象
    public List<T> list(){
        return new ArrayList<>(map.values());
    }

    //删除指定 id 对象
    public void delete(String id){
        map.remove(id);
    }

}
